import { defineStore } from 'pinia'
import { ref } from 'vue'
import { getLoginUserUsingGet } from '@/api/userController.ts'

export const useLoginUserStore = defineStore('loginUser', () => {
  // 从 localStorage 中获取初始用户信息
  const getStoredUser = () => {
    const storedUser = localStorage.getItem('loginUser')
    return storedUser ? JSON.parse(storedUser) : { userName: '未登录' }
  }

  const loginUser = ref<API.LoginUserVO>(getStoredUser())

  async function fetchLoginUser() {
    try {
      const res = await getLoginUserUsingGet()
      if (res.data.code === 0 && res.data.data) {
        loginUser.value = res.data.data
        // 将用户信息存储到 localStorage
        localStorage.setItem('loginUser', JSON.stringify(res.data.data))
      } else {
        // 如果获取失败，清除存储的用户信息
        loginUser.value = { userName: '未登录' }
        localStorage.removeItem('loginUser')
      }
    } catch (error) {
      console.error('获取用户信息失败:', error)
      loginUser.value = { userName: '未登录' }
      localStorage.removeItem('loginUser')
    }
  }

  // async function fetchLoginUser() {
  //   // 测试用户登录，3 秒后登录
  //   setTimeout(() => {
  //     loginUser.value = { userName: '测试用户', id: 1 }
  //   }, 3000)
  // }

  function setLoginUser(newLoginUser: API.LoginUserVO) {
    loginUser.value = newLoginUser
    if (newLoginUser.id) {
      // 只有在有用户ID时才存储
      localStorage.setItem('loginUser', JSON.stringify(newLoginUser))
    } else {
      // 如果是未登录状态，清除存储
      localStorage.removeItem('loginUser')
    }
  }

  return { loginUser, setLoginUser, fetchLoginUser }
})
